上一篇在最後提到了在 manifest 裡的内容安全策略(CSP)設定,
事實上它還有默認的安全策略, 這篇就來介紹還有哪些應該注意的限制
一、禁用 eval 和 相關函數
例如:
alert(eval("foo.bar.baz"));
window.setTimeout("alert('hi')", 10);
window.setInterval("alert('hi')", 10);
new Function("return foo.bar.baz");
會禁用的原因主要是預防 XSS 攻擊,
但其實在平常 Javascript 的開發上也應該避免使用這種方式,
因為大多數情況都能使用其它來取代 eval 的使用.
二、不允許在 HTML 裡內嵌 JavaScript
例如:
index.html
Hello World
<script>alert(1)</script>
必須將 script 標籤裡的程式碼移到外部的 JavaScript 文件
所以改成
index.html
Hello World
<script src="app.js"></script>
app.js
alert(1)
以及:
index.html
<button onclick="alert(1)">click</button>
內嵌的事件必須透過 addEventListener 來指定,
所以改成
index.html
<button id="btn">click</button>
<script src="app.js"></script>
app.js
document.querySelector('#btn').addEventListener('click', clickHandler);
function clickHandler(e) {
alert(1);
}
最後推薦一下由 Google 打造的AngularJS 框架,
它的設計模式除了可以避免以上那些禁區,
對想開發應用型的 Chrome Extension 也會是一大利器.
粉絲團:AugularJS.tw